Packet data networks are increasingly used for the exchange of realtime audio, video and data communications. Various protocols, including the H.323 protocol, require the establishment of a call signaling channel that is separate from the bearer channel. The call signaling channel is used to exchange signaling messages, such as call setup, tear down, address translation and messages related to billing.
In connection with realtime communications over packet data networks, or IP telephony, a signaling channel is usually established over the IP network between a client (such as media gateways and IP endpoints) and a call controller for basic call service and for various call feature support. Failure of the IP network or the call controller such that the call signaling channel is lost will lead to a service outage at the media gateway or IP endpoint. In order to prevent a loss of service under such circumstances, alternate call controllers are typically provided. However, when a media gateway or IP endpoint migrates to a new call controller, the existing calls (i.e., the bearer channels) may get torn down. Even if they are not torn down, it is likely that no call features will be available to the media gateway or IP endpoint, since the alternate call controller has no knowledge of the call state information associated with the calls. In particular, preservation of call features in addition to bearer connections requires that the alternate controller be supplied with call state information.
In order to provide call state information to an alternate controller, such information can be stored in a database that can be accessed by all primary and alternate call controllers. However, establishing a common, redundant database can be expensive. In addition, such databases can create a data bottleneck, especially when a large number of controllers are accessing the database. Furthermore, such a solution is not very robust, as network failures can prevent call controllers from accessing the common database.
Another approach to providing call state information to alternate call controllers dynamically updates available alternate call controllers with call state information. That is, as call state information is generated or updated, that information is provided to the alternate call controller or controllers that would be contacted by the client if the primary call controller were lost. However, this approach adds overhead and complexity, particularly as the number of call controllers available on a system increases. In addition, the alternate call controllers must be updated with call state information regarding all of the calls on the main controller. This can result in network congestion. In addition, the solution is not very robust, as network failures can prevent controllers from communicating with one another.